<!doctype html>
<html lang="zh-Hans">

<head>
  <meta charset="utf-8">
  <title>Angular</title>
  <meta name="Description" content="Angular is a platform for building mobile and desktop web applications.
    Join the community of millions of developers who build compelling user interfaces with Angular.">
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="search" type="application/opensearchdescription+xml" href="assets/opensearch.xml">
  <link rel="icon" type="image/x-icon" href="assets/images/favicons/favicon.ico">
  <link rel="icon" type="image/png" href="assets/images/favicons/favicon-32x32.png" sizes="32x32">
  <link rel="icon" type="image/png" href="assets/images/favicons/favicon-194x194.png" sizes="194x194">
  <link rel="icon" type="image/png" href="assets/images/favicons/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="assets/images/favicons/favicon-16x16.png" sizes="16x16">
  <link rel="apple-touch-icon" sizes="144x144" href="assets/images/favicons/favicon-144x144.png">
  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/images/favicons/favicon-144x144.png">

  <!-- NOTE: These need to be kept in sync with `ngsw-config.json`. -->
  <link href="assets/fonts/Material_Icons.css" rel="stylesheet">
  <link href="assets/fonts/Droid_Sans_Mono.css" rel="stylesheet">
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <!-- -->

  <link rel="manifest" href="pwa-manifest.json">
  <meta name="theme-color" content="#1976d2">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="translucent">

  <!-- Google Analytics -->
  <script>
    // Note this is a customised version of the GA tracking snippet
    // See the comments below for more info
    (function (i, s, o, g, r, a, m) {
      i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
        (i[r].q = i[r].q || []).push(arguments)
      }, i[r].l = 1 * new Date(); a = s.createElement(o),
        m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g;
      ~i.name.indexOf('NG_DEFER_BOOTSTRAP') || // only load library if not running e2e tests
        m.parentNode.insertBefore(a, m)
    })(window, document, 'script', 'assets/js/analytics.js', 'ga');
  </script>
  <!-- End Google Analytics -->

  <script>
    // Report fatal errors to Google Analytics
    window.onerror = function () {
      ga('send', 'exception', { exDescription: formatError.apply(null, arguments), exFatal: true });

      function formatError(msg, url, line, col, e) {
        var stack;
        msg = msg.replace(/^Error: /, '');
        if (e) {
          stack = e.stack
            // strip the leading "Error: " from the stack trace
            .replace(/^Error: /, '')
            // strip the message from the stack trace, if present
            .replace(msg + '\n', '')
            // strip leading spaces
            .replace(/^ +/gm, '')
            // strip all leading "at " for each frame
            .replace(/^at /gm, '')
            // replace long urls with just the last segment: `filename:line:column`
            .replace(/(?: \(|@)http.+\/([^/)]+)\)?(?:\n|$)/gm, '@$1\n')
            // replace "eval code" in Edge
            .replace(/ *\(eval code(:\d+:\d+)\)(?:\n|$)/gm, '@???$1\n')
        } else {
          line = line || '?';
          col = col || '?';
          stack = url + ':' + line + ':' + col;
        }
        return (msg + '\n' + stack).substr(0, 150);
      }
    };
  </script>

<link rel="stylesheet" href="styles.4adbe52ad34df01b5273.css"></head>

<!--
  This content replaces the `<body>` content of `index.html` to generate our custom `404.html` page.
  The content must visually and structurally resemble the resulting HTML of the main app for not
  found pages (e.g. https://angular.io/not/existing).
-->

<style>
  .mat-toolbar-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}
  .mat-toolbar-row{height:64px}
  @media (max-width:600px){.mat-toolbar-row{height:56px}}
  .nav-link.home{margin-left:24px}
</style>

<aio-shell class="mode-stable page-file-not-found folder-file-not-found view- aio-notification-hide">

  <mat-toolbar class="app-toolbar no-print mat-toolbar mat-primary">
    <mat-toolbar-row class="mat-toolbar-row">
      <a class="nav-link home" href="/">
        <img alt="Home" height="40" src="assets/images/logos/angular/logo-nav@2x.png" title="Home" width="150">
      </a>
    </mat-toolbar-row>
  </mat-toolbar>

  <mat-sidenav-container class="sidenav-container mat-drawer-container mat-sidenav-container" role="main">
    <mat-sidenav-content class="mat-drawer-content mat-sidenav-content">
      <section class="sidenav-content" role="article">
        <aio-doc-viewer>
          <div class="content">
            <div class="nf-container l-flex-wrap flex-center">
              <img src="assets/images/support/angular-404.svg" width="300" height="300" />
              <div class="nf-response l-flex-wrap">
                <h1 class="no-toc" id="page-not-found">Resource Not Found</h1>
                <p>We're sorry. The resource you are looking for cannot be found.</p>
              </div>
            </div>
          </div>
        </aio-doc-viewer>
      </section>
    </mat-sidenav-content>
  </mat-sidenav-container>

  <footer class="no-print">
    <aio-footer>
      <p>
        Powered by Google ©2010-2020.
        Code licensed under an <a href="license" title="License text">MIT-style License</a>.
        Documentation licensed under <a href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>.
      </p>
    </aio-footer>
  </footer>

</aio-shell>


</html>
